В РО есть графа у юнита Движение - скорость поворота там указываешь в секундах скорость его поворота на 180*. Я ставлю 1.0сек, у каждого юнита по умолчанию своя(обычно не больше 0.4сек). Стоять на месте он будет как раз это время которое поворачивается. Разворачиваться будет сразу после приказа.
Отпускание WASD встроенными средствами отловить невозможно, поэтому полноценное управление движением через WASD нереализуемо (как минимум, пока что). Систем же движения с управлением стрелками на сайте есть великое множество, на любой вкус, пользуйтесь поиском.
там один из воронов от медива другой от друидов воронов
от друидов-воронов точно должно работать
чтобы было легче разобраться можешь в редакторе ворона от медива, который НЕ Arav, переименовать и юзать НЕпереименованный
если нет change ищи set
и так посмотри вкладку Анимация - по-моему там смена высоты полета
Ставишь юниту в разделе Бой - Атаки на Нет, потом делаешь две способности на базе одной из сфер (например Предмет: электрическая атака), у одной из них Включен индекс атаки - 1, у другой - 2. Добавляешь первую способность юниту в РО. Когда тебе нужно изменить дальность атаки - удаляешь ту способность сферы, которая есть у юнита и добавляешь другую. Правда при этом не будет видно иконки атаки.
так это самый простой вариант там приказ сам отлавливать .а не замах я так к примеру написал ( но гемора с проверками будет много мне кажется )
можно еще посути менять дистанцию получение приказа на отаку менять у юнита
call SetUnitAcquireRangeBJ( gg_unit_Hblm_0000, 100.00 )
кароч сделал только до ума довести нужно но вроде все работает.
Для увеличения дальности атаки используют улучшение на основе длинностволых мушкетов. Добавить всем героям это улучшение после чего при получении предмета выставляется уровень улучшения функцией SetPlayerTechResearched
что бы она сразу перешла в режим наведения.. а то выглядит как баг, из-за которого надо нажимать по 2 раза...
Gui -> Force player to use X key
Согласовываешь с хоткеем строительства ======================================
Бафф имеется в виду Бафф или Спецэффект?
Если спецэффект:
Нужно улучшение в требованиях способности поставить, посмотри какие-нибудь стандартные способности, чтобы понять, например, Внутреннее пламя Целителя Альянса.
Такой возможности, к сожалению, система вопросов не предоставляет. Это работает только с обычными ресурсами. И реализовывать в ближайшее время точно не планируется
Вроде бы удалось решить проблему самостоятельно. Ошибка действительно была элементарной - идентификатор не устраивал введённый туда заглавный символ, а я не знал об этом. Простите за беспокойство.
Да у тебя куча дыр, во-первых ты не запустил триггер 115 области lumber direction, и оно соответственно не реагирует на событие. Во-вторых перепроверь gold проверку условия на да или нет в той карте которую ты отправил стоит нет
А золото не движется потому что ты ожидание 0,5 сек поставил а область в милисекунде от изначальной то есть триггер не успевает запуститься
да, сейчас вообще обратил внимание что текстуры идущие в комплекте не воспринимаются почему-то, а именно "Shield.blp".
Все равно проблема не решилась, вроде бы смог заменить текстуру, которую не видел но варик не воспринимает модель.
1
Afterdeath, скрин не могу, я с мобильного сейчас. Текстом напишу, по памяти.
Действия:
Pick every unit in playable map area and do multiple actions:
If picked unit belongs to ally of (Игрок 1) = да then (это союзник игрока 1).
Hide picked unit.
Делай мвссив с индексом равным номеру игрока (чтоб не запутаться) При событии ставь условие на триггеринг игрока. Если триггенинг игрок = красный то перекидывай соотв. юнита по индексу. напр MyHero[1]. Используй if then else. Все вместится в 1 триггер с кол-вом событий равным кол-ву игроков.
native GroupEnumUnitsInRange takes group whichGroup, real x, real y, real radius, boolexpr filter returns nothing
native GroupEnumUnitsInRect takes group whichGroup, rect r, boolexpr filter returns nothing
//на месте фильтра должна быть функция (которая возвращает boolean) обрабатываемая этой
native Condition takes code func returns conditionfunc
//с помощью этого можно определить жив ли юнит
constant native IsUnitType takes unit whichUnit, unittype whichUnitType returns boolean
constant unittype UNIT_TYPE_DEAD = ConvertUnitType(1)
//а с помощью этого можно проверить чьи это юниты
constant native GetOwningPlayer takes unit whichUnit returns player
если игрок, чьих юнитов мы проверяем, будет, к примеру, рандомно меняться, то передавай его в функцию фильтра через глобальную переменную, устанавливая ей нужное значение непосредственно перед пиком
если группа будет пуста, значит юнитов в области нет...
я не помню что там да как в гуи, но посидев, поигравшись часик-два с этими функциями можно спокойно написать требующиеся 10-15 строк рано или поздно пора начинать учить этот чертов джасс!
решил проблему костылём - дал возможность рабочему строить только башню - шаблонку, которая в свою очередь может улучшаться в две указанные башни. Взаимосвязь поставить только от башни - шаблонки. Лимит поставил на башню шаблонки.
Но тема не закрыта. Хотелось бы узнать можно ли решить проблему без костылей.
По завершении строительства фермы увеличивай число получаемого игроком золота (переменная из масива), а при смерти - уменьшай. (соответственно, наоборот, для пехотинцев)
А вообще - фича бесполезная в рамках стандартного мили-режима варкрафта. Слишком профитно уходить в экономику.
Через тип текстуры земли или как там трава называется.
За кругом используешь ту, которой нет в игровой зоне. Если юнит находиться на ней, то твои действия.
Выключай даммику пасинг и переноси в нужную точку.
local unit d
local real x=GetUnitX(u)
local real y=GetUnitY(u)
......
set d=CreateUnit(p,dummy,0,0,0)
call SetUnitPathing(d,false)
call SetUnitX(d,x)
call SetUnitY(d,y)
quq_CCCP, благодарю, но всё же хотелось бы именно с thistype.next, thistype.prev.
кажется, я сделаль:
struct data
static timer period = CreateTimer( )
thistype prev
thistype next
unit u
integer a
method destroy takes nothing returns nothing
set this.prev.next = this.next
set this.next.prev = this.prev
if ( thistype(0).next == 0 ) then
call PauseTimer( period )
endif
call thistype.deallocate( this )
endmethod
static method iterate takes nothing returns nothing
local thistype this = thistype( 0 ).next
loop
exitwhen ( this == 0 )
set this.a = this.a + 1
call SetUnitVortexColor( this.u, 255, 255, 255, this.a )
if ( this.a > 255 ) then
call this.destroy( )
endif
set this = this.next
endloop
endmethod
static method createUnit takes nothing returns thistype
local thistype this = thistype.allocate( )
set this.next = 0
set this.prev = thistype(0).prev
set this.next.prev = this
set this.prev.next = this
set this.u = CreateUnit(...)
set this.a = 0
call SetUnitVortexColor( this.u, 255, 255, 255, this.a )
if ( this.prev == 0 ) then
call TimerStart( period, 0.03125, true, function thistype.iterate )
endif
return this
endmethod
endstruct
Ну тут вся фитча в канале, тут чаннелинг когда завершится тогда бара переместится + защита от сбивания приказа, т.е снова начинает кастовать скилл. Сам ульт бары основан на канале, смотри его настройки. Мне больше нравился старый вариант, где бара мгновенно кастовал ульт и растворялся в воздухе, после атаковал цель...
Самое простое - отредактировать стандартные лучи. Сделать их максимально толстыми наверху и обычными пониже, увеличить количество частиц в секунду и время жизни. Можно и переблёскивающийся оттенок сделать сверху на середину.
Если правильно настроить угол падения, то можно добиться, чтобы лучи были видны только по краям камеры.Поищи статью про погоду. Хотя можешь воспользоваться этой картой, но там нет пояснений, только файл погоды и путь.
Редактировать удобнее через SLKEditor
попробуй что я сделал)
GetMouseX() не может вызывать десинхрон, т.к не создает хендл
Десинхронило потому что ты делал условие if x>=1485 and x<=1485+61 and y>=1000 and y<=1064 then
на машинах других игроков X был равен 0 и поэтому он не проходил через условие, т.е получается что ты создавал игровой объект локально
Далее в функции движения снаряда определяем столкновение с землёй, получаем нормаль и строим вектор отражения по данной нормали и текущей скорости снаряда:
Нужно отредактировать файл MiscData, чтобы создавать более крутые склоны (тогда зависимость высоты от размера кисти уменьшится).
А именно строку "MaxSlope=50" на "MaxSlope=90".
Полностью поддерживаю решение того/тех, кто понизил уровень, т.к. ваши срачи в блогах не только бессмысленны, но и не несут развлекательного характера, т.е. абсолютно пустая трата времени и мозговых клеток.
Извинение также ничего не значит, имхо, т.к. нет гарантий, что подобные ситуации не повторятся.
Однако это не значит, что если вы будете делать что-то более интересное или хотя бы не бессмысленное в своих блогах, то вам не повысят уровень снова. Т.е. вы можете в принципе писать что хотите, но если это не будет иметь никакого смысла за собой, или будет абузить системы сайта (например набивание опыта и пр.), то не ожидайте, что администрация будет сидеть и смотреть на это. В этом случае из-за понижения уровня, насколько я понял, отключился опыт за комменты, т.к. все, что было в блоге - бесцельный флуд.
Найдите что-то, о чем вам будет интересно писать в блоге, наполняйте его контентом, и либо модераторский состав заметит, что блог стал лучше, либо вы сами, если будете довольны контентом своего блога, сможете в определенный момент написать об этом менеджерам, попросить повышения уровня. Пока же считаю решение о понижении правильным. Такие дела.
Еще для примера, если вы хотите блог со спорным контентом, можете посмотреть на этот, еще обратите внимание на данный блог, вот тут я был несогласен о понижении уровня, т.к. мне кажется, что контент там, несмотря на то, что оскорбительный, полностью направлен на развлечение (причем как читающих, так и самого блоггера), но понижен и скрыт он был из-за постоянных оскорблений в адрес администрации (вроде бы), вот уж там действительно спорный и классный блог, для которого даже скрытие не было проблемой в свое время, т.к. пока остаются читатели, остается и блог.
shmatko, там нужна задержка. обычно хватает задержки в 0.0 сек. Во многих случаях использую, тк вар не успевает подготовить и прочее. Такие случаи в варе не новы. Здесь она тоже пригодилась. Короче я пробовал на гуи вэйт в 0.00 сек. Но видна иконка на сек, как вы сказали. а попробовал таймером в 0.00 сек норм получилось, иконки не видно
У таймера запуск происходит сразу, вэйт медлителен
JPNG и используешь стандартные функции. Есть еще Zephir и HiveWE, но там немножко будет гемморно. Unlimited давно использовался до JPNG, там вагон фич для ГУИ, но там надо вкуривать и изучать. А ломал сей редактор карты из-за функций интеграции нестандартных функций в функции карты для работы в редакторе(извиняюсь за тавтологию).
Решено. Удивительно, но карта открывается в новой версии редактора на патче 1.31. Сохранил в новом патче, воспользовался конвертером и все работает... Странно. Могу ли я что-то сломать таким способом?
Проблема и правда была в каменных подьемах, которые я пытался заменить. После их удаления на новом патче и конвертирование в 1.26 - все работает. Можно ли как-то удалять декорацию не открывая карту.
Проблема была в том, что каменному подъему был задан нестандартный цвет на миникарте.
Ну тебе нужно чтобы был прямо таки бафф который можно рассеивать?
Для начала сделай способность, и баф на основе какой нибудь пустышки, подойдет ярость у некромантов, так же переодический триггер который раз в пол секунды проверяет всех юнитов в группе, есть ли у них бафф если юнит мертв или у него нет баффа, то у юнита удаляется способность на доп урон зданиям и сам унит удаляется из группы.
При касте твоим шаманов заклинания на цель, ты добавляешь цель заклинания в группу, которую и перебирает описанный выше триггер.
Надеюсь понятно?
Только дебаффы ядовитых стрел могут стакатся, но даммик обязан иметь дальнюю атаку (при условии что у разных абилок ядовитых стрел будут разные баффы в настройках).
Так же можно юзать таймер и ауру торнадо как написали выше, ну если уж совсем нужен сложный бафф как дефолтный - то тут триггер и немного гемора с мемхаком, зато полный комплект параметров (мигает иконка в статусе перед завершением время действия, бафф спадает с цели после диспела, смерти (у цели крест перерождения или аналог), складывается или не складывается в зависимости от кода).
Пример не рекомендуемый к повторению
function FormatAirportTrainingBar takes integer fp_n returns string
local string str = ""
if ( fp_n <= 0 ) then
return str
endif
loop
exitwhen fp_n < 10
if ( udg__TempBarStyle == 0 ) then
set str = str + "''''''''''"
else
set str = str + "||||||||||||||||||||"
endif
set fp_n = fp_n - 10
endloop
loop
exitwhen fp_n <= 0
if ( udg__TempBarStyle == 0 ) then
set str = str + "'"
else
set str = str + "||"
endif
set fp_n = fp_n - 1
endloop
return str
endfunction
function UpdateAirportTrainingBar takes texttag tt, integer fp_nTick, integer fp_nTickMax returns nothing
local integer nProgress
local integer nLen
local string strTT1
local string strTT2
if ( tt == null ) then
call BJDebugMsg( "text tag hDZzRwuZxFQcXqaMPnML null" )
return
endif
set nLen = R2I( I2R( fp_nTickMax ) / 300 * 100 )
set nProgress = R2I( I2R( nLen ) / fp_nTickMax * fp_nTick )
set strTT1 = "" + FormatAirportTrainingBar( nProgress )
set strTT2 = FormatAirportTrainingBar( nLen - nProgress ) + ""
call SetTextTagText( tt, "|cff0080c0" + strTT1 + "|r|cffff0000" + strTT2 + "|r", 0.023 )
endfunction
function Get_Staff_of_Purification takes unit runner returns item
set bj_forLoopAIndex = 0
set bj_lastCreatedItem = null
if GetUnitAbilityLevel( runner, 'Arun' ) == 0 then
return null
endif
loop
exitwhen bj_forLoopAIndex > 5
set bj_lastCreatedItem = UnitItemInSlot( runner, bj_forLoopAIndex )
if GetItemTypeId( bj_lastCreatedItem ) == 'I01A' then
return bj_lastCreatedItem
endif
set bj_forLoopAIndex = bj_forLoopAIndex + 1
endloop
return bj_lastCreatedItem
endfunction
function Trig_RunnerDamageDetect_Conditions takes nothing returns boolean
if GetTriggerEventId( ) == EVENT_UNIT_DAMAGED then
return GetEventDamage( ) > 0.00 and GetEventDamageSource( ) != GetTriggerUnit( ) and GetEventDamageSource( ) != DummyAttacker
endif
return true
endfunction
function HealRunner takes nothing returns nothing
local DamageData dd = GetDataBX( GetExpiredTimer( ) )
call UnitRemoveAbility( dd.attacked, 'AMhp' )
call SetUnitState( dd.attacked, UNIT_STATE_LIFE, dd.hp )
call RemoveDataBX( dd.trix )
call DestroyTimer( dd.trix )
call dd.clear( )
call dd.destroy( )
endfunction
function Trig_RunnerDamageLock_Actions takes nothing returns nothing
local TriggerData st = GetDataBX( GetTriggeringTrigger( ) )
local DamageData dd
local eventid id = GetTriggerEventId( )
if id == EVENT_GAME_TIMER_EXPIRED and st.id < st.time and st.attacked != null then
set st.id = st.id + 1
if GetUnitAbilityLevel( st.attacked, 'Bcyc' ) > 0 or GetUnitAbilityLevel( st.attacked, 'Bcy2' ) > 0 then
call SetTextTagPos( st.tt, GetUnitX( st.attacked ) - 60.00, GetUnitY( st.attacked ) - 60.00, 585.00 )
else
call SetTextTagPos( st.tt, GetUnitX( st.attacked ) - 60.00, GetUnitY( st.attacked ) - 60.00, 80.00 + GetUnitFlyHeight( st.attacked ) )
endif
call UpdateAirportTrainingBar( st.tt, 100 - R2I( st.dmg / st.hp * 100.00 ), 100 )
elseif id == EVENT_UNIT_DAMAGED and st.dmg < st.hp then
set dd = DamageData.create( )
set dd.trix = CreateTimer( )
set dd.attacked = st.attacked
set dd.dmg = GetEventDamage( )
set dd.hp = GetUnitState( dd.attacked, UNIT_STATE_LIFE )
call SetDataBX( dd.trix, dd )
call UnitAddAbility( dd.attacked, 'AMhp' )
call SetUnitState( dd.attacked, UNIT_STATE_LIFE, dd.hp + dd.dmg )
call TimerStart( dd.trix, 0.00, false, function HealRunner )
set st.dmg = st.dmg + dd.dmg
else
call UnitRemoveAbility( st.attacked, 'A08L' )
call UnitMakeAbilityPermanent( st.attacked, false, 'A08L' )
call DisableTrigger( st.trg )
call SetTextTagVisibility( st.tt, false )
if not IsUnitDead( st.attacked ) then
call UnitRemoveAbility( st.attacked, 'B00A' )
endif
call RemoveSavedInteger( gg_htb_HashData, ExKeySoPRunner, GetHandleId( st.attacked ) )
call st.RemoveTrigger( )
call st.destroy( )
endif
set id = null
endfunction
function Trig_Staff_of_Purification_Actions takes nothing returns nothing
local TriggerData dd
local unit Runner = GetSpellAbilityUnit( )
local integer RunnerId = GetHandleId( Runner )
local item Staff = LoadItemHandle( gg_htb_HashData, RunnerId, ExKeySoP )
local integer ChargesCount = 0
local trigger trig = LoadTriggerHandle ( gg_htb_HashData, ExAtomShield, RunnerId )
local integer pBuff
if Staff == null then
set Staff = Get_Staff_of_Purification( Runner )
if Staff == null then
//call DisplayTextToPlayer( Player( CrashPlayerNumber ), 0.00, 0.00, I2Sx( 'A01Q', CrashPlayerNumber ) )
call BJDebugMsg( DEBUG + I2Sx( 'A02O', 0 ) + INFO )
return
endif
call SaveBoolean( gg_htb_HashData, RunnerId, ExKeyHasStaff, true )
call SaveItemHandle( gg_htb_HashData, RunnerId, ExKeySoP, Staff )
endif
set ChargesCount = GetItemCharges( Staff )
if ChargesCount < 1 then
set Runner = null
set Staff = null
set trig = null
return
endif
call SetItemCharges( Staff, 0 )
if trig != null then // блокирующие урон способности не складываются.
call TriggerExecute( trig )
set trig = null
endif
set dd = TriggerData.create( )
set dd.attacked = Runner
set dd.pl = GetOwningPlayer( Runner )
set dd.trg = CreateTrigger( )
set dd.trc = TriggerAddCondition( dd.trg, Condition( function Trig_RunnerDamageDetect_Conditions ) )
set dd.tra = TriggerAddAction ( dd.trg, function Trig_RunnerDamageLock_Actions )
set dd.tt = CreateTextTag( )
set dd.hp = 1000.00 * ChargesCount
set dd.dmg = 1.00
set dd.id = 0
set dd.time = 480
set dd.c = 0.03125
call UnitAddAbility( Runner, 'A07E' )
call UnitRemoveAbility( Runner, 'A07E' )
call UnitAddAbility( Runner, 'A08L' )
call UnitMakeAbilityPermanent( Runner, true, 'A08L' )
call SetDataBX( dd.trg, dd )
call SaveInteger( gg_htb_HashData, ExKeySoPRunner, RunnerId, dd )
call TriggerRegisterPlayerEvent( dd.trg, dd.pl, EVENT_PLAYER_LEAVE )
call TriggerRegisterDeathEvent( dd.trg, Runner )
call TriggerRegisterUnitEvent( dd.trg, Runner, EVENT_UNIT_DAMAGED )
call TriggerRegisterTimerEvent( dd.trg, 0.03125, true )
if GetLocalPlayer( ) == dd.pl or IsPlayerAlly( GetLocalPlayer( ), dd.pl ) then
call SetTextTagVisibility( dd.tt, true )
else
call SetTextTagVisibility( dd.tt, false )
endif
set pBuff = GetUnitAbility( dd.attacked, 'B00A' ) + 0x90
set dd.c = TimerGetElapsed( DispTimer )
call WMem( RMem( pBuff ) + 0x4, mR2I( dd.c + 15.10 ) )
call WMem( RMem( pBuff ) + 0x8, mR2I( dd.c + 10.408 ) )
call SetBuffLevel( pBuff - 0x90, ChargesCount )
call UpdateAirportTrainingBar( dd.tt, 100, 100 )
set Runner = null
endfunction
//===========================================================================
function InitTrig_Staff_of_Purification takes nothing returns nothing
set udg__TempBarStyle = 0
endfunction
Выше пример баффа для предмета, который образует щит блокирующий урон, кол-во заблокированного урона и сколько еще заблокирует щит отображается над головой героя, в виде полоски здоровья (только цвет сине-красный). Так же в статуе есть бафф, один в 1 как бафф дефектных способностей вара, не складывается - новый, перебивает старый. И так далее...
Здравствуй, посмотрел карту, на счет вейтов кстати не думаю хорошая идея ими пользоваться, но вызывать какую именно "щупальце" в принципе можно сделать так(проверкой на уровень способности) и все это будет одним триггером
тоже самое можно и с первыми 3 сократить в 1, простой проверкой на уровень способности
ClotPh, а сама функция прелоада не рубится потоком при этом (возможно, прописано слишком много и оно требует разбития на отдельные потоки прелоада через ExecuteFunc)?
Диалоги в 1.30 и ниже должны быть в формате MP3, битрейтом 80 kbps, частотой дискретизации 44100 hz, одним каналом (моно)
Звуки юнитов в 1.30 и ниже должны быть в формате WAV, семпл рейтом 22050 hz, 16 бит на семпл
По крайней мере, в архивах близзард они такие.
В reforged всё должно быть посовременней
Идея!
В модели один слой, а можно выделить ветви и на новый слой их, а там уже можешь делать смещение без коверкания наложения текстуры.
Что-то с моделью этой, не получается провернуть указанную операцию, постоянно вылетает ошибка.
Через две секунды исчезновение делать не стал, потому что немного муторнее и требует проверок. Там по идее надо ставить плавное растворение на 2000 кадров. Принцип опять же можешь посмотреть у моделей с разлагающимся трупом.
rsfghd, нормали сделаны не для изменения цвета поверхности, а для реакции на падение света под разными углами.
Грубо говоря, на примере шара - ты можешь сделать шар из мешей очень круглым, а можешь сделать его ребристым, имея одинаковое число вершин.
В первом случае нормали смежных вершин соседних треугольников смотрят в одну сторону (общая для соседей), во втором случае нормаль каждого треугольника перпендикулярна его поверхности (не связана с соседними).
А то, что у тебя получаются черные модели - то результат неверного их расположения.
Для изменения свойств поверхности надо использовать материалы
Вроде бы удалось решить проблему самостоятельно. Ошибка действительно была элементарной - идентификатор не устраивал введённый туда заглавный символ, а я не знал об этом. Простите за беспокойство.
скачай этот файл и закинь его в папку AdicHelper\lib\ в папке с jngp
после в шапке карты напиши include "ifdebug.j"
и создай триггер с событием
игрок написал в чат ifdebug как точное совпадение
действие
кастом скрипт log()
после чего запусти карту и напиши в чат ifdebug
он выведет на экран все if/else/elseif через которые он прошёл (true в скобках в конце строки означает что значение в ифе истина)
Честно я не знаю меняет родная защита и прочие характеристики юнита при использовании тёмный. Давно не игрался с этим. Да и делал я типа кур. Говорят там только модель меняется. А вот перевоплощение да там могут меняться атрибуты и прочее. Если так то редактируйте этого юнита. И вообще проверяйте сами все
При использовании абилы тёмный сам юнит никуда не удаляется, просто модель меняется (сам даже удалял много ещё) - трудно проверить?
А почему ты не можешь просто сделать так,чтобы предмет с твоей броней просто одевался на героя.Это самый простой вариант,в котором есть только одна проблема-найти/сделать модель этого предмета.
Работаю с ВоВ-моделью. Проще сделать много скинов к ней, как в самой ММО, чем модель брони.
а) Создай 2 переменные-массива по типу "боевая единица" (массив - чтобы для каждого игрока, мы ведь за мультиплеер трем, прально?), назови типа MyChampion и MyChampionDummy.
б) подготовь невидимого героя-пустышку с нужной тебе иконкой, убери ману, если у чемпиона ее нет. Убери ему радиус обзора, убери галочки типа "отмечать на мини-карте" - остальные - опционально.
В дальнейшем мы будем синхронизировать пустышку и реального чемпиона, создавая видимость одной боевой единицы.
Итак, наш первый триггер:
в) Отследи первое появление чемпиона, когда это случится - создай для игрока героя-пустышку. Соответственно сделай MyChampion [number of (Owner of trained unit)]= last trained unit, следующей строчкой создай того самого героя-пустышку для (owner of trained unit) и сделай MyChampionDummy = last created unit. Теперь мы прочно связали этих чуваков. Этот же триггер запускает остальные.
г) Отслеживание здоровья. Сделай изначально выключенный цикличный триггер, там, каждые 0.3 секунды. Триггер запускается пунктом в). Каждые 0.3 секунды меняй здоровье героя (чья икона висит, надо чтобы она соответствовала, прально?) в % на здоровье самого чемпиона.
д) пропищи событие, мол, если выбирает игрок своего героя (кликая на иконку) выбирается чемпион
е) убивай героя вместе с чемпионом
ж) отключай триггеры с проверкой и выбором, пока чемпион мертв
з) не забывай обновлять переменную чемпиона с каждым новым чемпионом.
Уже решил.для тех кто будет искать данный вопрос - можно использовать свиток регенерации(Раса:люди),он игнорирует сколько у вас хп и имеет длительность.
Нет, далеко не все фишки и особенности известны. Все способности описаны в движке игры, защита от магии горного великана это клон множества абилок защиты от магии, главная их суть - выдать классификацию герой юниту. Т.е после появления этой способности горный великан становится героем и его нельзя полиморфить, переманивать и так далее.
Применять на маг имунных можно только высшие заклинание - т.е только геройские, у который требование к уровню выше 1, в до целях уязвимые\неуязвимые.
Нету в карте триггера на стакание предмета, но есть непонятный триггер дропа:
Как понимаю, он должен работать лишь для определённого вида героев, которых автор зачем-то удалил, но не суть, главное, что вообще нет триггера на стакание предметов. Зато есть Руна Исцеления, которую советовал Bergi_Bear, есть две хилки, которые советовал PT153. Александр19, не верю, что ты вообще нуб в триггерах, так как что-то там составляешь, скорее ты просто удалил триггер из неё, ради которого у тебя карту и просили. Честно скажу, что ты неадекватный. Но мы здесь не для диагнозов, а чтобы на вопросы отвечать, потому вот здесь xgm.guru/p/wc3/193169 возьми систему сложения и разъединения предметов, оттуда скопируй себе в карту триггеры PickUp, AddOrDiv и включи их. Там всё подробно описано, просто сменишь Камень Здоровья на свою хилку. А главное, дроп происходит из-за триггеров OgrItemBoss2 и OgrItemBoss3. Отключи их.
Видимо єта кнопка тесно спряжена с более низкими слоями игры (чит. "hardcoded"). Похоже, что скрыть её нельзя. Я могу только посоветовать вернуться назад и посмотреть, что можно сделать по-другому, чтобы не приходилось скрывать кнопку.
Порыть там надо, во всяком случае стандартные приказы, иконки и клавиши к ним там прописаны.
(естесственно нужно импоритровать эти изменённые файлики в карту)
Я пробовал прописывать кнопке неадекватные значения позиции кнопки и пиктограммы, но ничего не вышло — игра подставляет свои значения.
Что бы сделать каст огненного столба, необходимо создавать вспомогательного юнита, давать ему способность огненный столб и уже вновь созданному скрытому юниту со способностью москиты давать приказ применять огненный столб. Выше описали в какую сторону копать.
P.S. где то на форуме есть архив карт с кучей примеров разного рода фич. Если найду то скину ссылку.
upd.
» WarCraft 3 / Движение юнита
» WarCraft 3 / Дальность атаки
» WarCraft 3 / Как выдать способность зданию
» Администрация XGM / Дополнительные поля в создании вопросов
» WarCraft 3 / Где звуки?
» WarCraft 3 / Что не так?
» WarCraft 3 / Проверка типа юнитов
» WarCraft 3 / SetUnitVertexColor
» WarCraft 3 / Эффекты на экране
» WarCraft 3 / Точка приложения эффекта
» Администрация XGM / Баг с созданием ресурса
» WarCraft 3 / 2 Клифа
» IrInA Host Bot / Жалоба
» WarCraft 3 / Reforged и CommandFunc.txt
» WarCraft 3 / Сломался JNGP
» WarCraft 3 / Lua в WarCraft III
» WarCraft 3 / Как сделать способность с баффом
» WarCraft 3 / Звуки нестандартных юнитов
» WarCraft 3 / Помощь по Mdlvis
» WarCraft 3 / Не работает триггер выделения героя
» WarCraft 3 / АОЕ хил
» WarCraft 3 / Срочный вопрос
» WarCraft 3 / Помогите!!!